#ifndef _BUILTINOBJECT_HPP
#define _BUILTINOBJECT_HPP

#include <string>
#include "Object.hpp"
#include "Type.hpp"
#include <functional>
#include <vector>

namespace object {
	class BuiltinObject : public Object {
	public:
		BuiltinObject() {}

		virtual string Type() override {
			return BUILTIN_OBJECT;
		}

		virtual string examine() override {
			return "builtin";
		}

		/*virtual void addRef() override {}
		virtual void releaseRef() override {
			if (_refCount == 0) {
				Gc::getInstance().eraseObject(_uuid);
				delete this;
			}
		}*/

		virtual ~BuiltinObject() {}

	public:
		std::function<Object*(std::vector<Object*>)> _func;
	};
}


#endif // !_BOOLEAN_HPP
